package com.yunhe.openapi.model;

import org.apache.commons.lang.StringUtils;

import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

//第三方客户信息
public class CustomerInfo {
    private String customerId; //客户编号
    private String customerName; //客户名称
    private List<CompanyInfo> companys; //园区单位信息

    //获取某个公司下的所有点号 set集合
    public Set<String> getPointNumbers(String companyCode) {
        for(int i=0; i<companys.size(); i++){
            if(companys.get(i).getCode().equals(companyCode)){
                Set<String> set = new HashSet<>();
                companys.get(i).getPointNumbers().values().forEach(e->{
                    set.add(e);
                });
                return set;
            }
        }
        return null;
    }

    //获取某个公司下的点号 map集合
    public Map<String, String> getPointNumberMap(String companyCode) {
        for(int i=0; i<companys.size(); i++) {
            if (companys.get(i).getCode().equals(companyCode)) {
                return companys.get(i).getPointNumbers();
            }
        }
        return null;
    }

    //基于公司编码以及指定的点号编码 查询对应的点号
    public Set<String> getPointNumbers(String companyCode, String dataCode) {
        //未指定要查询的点号指标 查询全部项
        if(StringUtils.isBlank(dataCode)){
            return this.getPointNumbers(companyCode);
        }

        //指定了要查询的点号
        Map<String, String> map = getPointNumberMap(companyCode);
        Set<String> set = new HashSet<>();
        String[] arr = dataCode.split(",");
        for(int i=0; i<arr.length; i++){
            if(StringUtils.isBlank(arr[i]) || StringUtils.isBlank(map.get(arr[i]))){
               continue;
            }
            set.add(map.get(arr[i]));
        }
        return set;
    }

    public List<CompanyInfo> getCompanys() {
        return companys;
    }

    //根据公司编码查询公司名称
    public String getCompanyName(String companyCode) {
        for(int i=0; i<companys.size(); i++) {
            if (companys.get(i).getCode().equals(companyCode)) {
                return companys.get(i).getName();
            }
        }
        return null;
    }

    //根据点号获取对应的标记
    public String getDataCoe(String pointNumber) {
        for(int i=0; i<companys.size(); i++) {
            Map<String, String> map = companys.get(i).getPointNumbers();
            for (Map.Entry<String, String> entry : map.entrySet()) {
                if(entry.getValue().equals(pointNumber)){
                    return entry.getKey();
                }
            }
        }
        return null;
    }

    public void setCompanys(List<CompanyInfo> companys) {
        this.companys = companys;
    }

    public String getCustomerId() {
        return customerId;
    }

    public void setCustomerId(String customerId) {
        this.customerId = customerId;
    }

    public String getCustomerName() {
        return customerName;
    }

    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }

}
